Claude Codeに仕事が終わったら通知して欲しい
ここにあるように、TaskCompleted hookでやると毎回通知されるとうっとうしいか? という気がした。
code:settings.json
{
"hooks": {
"TaskCompleted": [
{
"hooks": [
{
"type": "command",
"command": "~/local/bin/tell-task-completed.sh",
"timeout": 60
}
]
}
]
}
}
claude本人と話していたら、以下のようにしたらいい感じになった。
code:settings.json
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "~/bin/claude-delayed-notify.sh &",
"timeout": 1
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "~/bin/claude-cancel-notify.sh",
"timeout": 1
}
]
}
]
code:claude-delayed-notify.sh
PIDFILE="$HOME/.claude-notify.pid"
# 既存の待機プロセスをキャンセル
OLD_PID=$(cat "$PIDFILE")
kill "$OLD_PID" 2>/dev/null
rm "$PIDFILE"
fi
# 自分のPIDを記録してバックグラウンドで待機
echo $$ > "$PIDFILE"
sleep 10
# まだPIDファイルが残っていれば通知(キャンセルされなかった)
osascript -e 'display notification "入力待ちだ" with title "Claude Code"'
rm "$PIDFILE"
fi
code:claude-cancel-notify.sh
PIDFILE="$HOME/.claude-notify.pid"
PID=$(cat "$PIDFILE")
kill "$PID" 2>/dev/null
rm "$PIDFILE"
fi
10秒待機して、それでも放置されてたら通知されるようにしたら、今のところいい感じ。